package com.iven.xie.redis.service.impl;

import com.google.common.collect.Maps;
import com.iven.xie.redis.model.CacheTemplate;
import com.iven.xie.redis.beans.ResObject;
import com.iven.xie.redis.dao.CacheTemplateDao;
import com.iven.xie.redis.service.CacheTemplateService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * @author iven.xie
 */
@Service
public class CacheTemplateServiceImpl implements CacheTemplateService {

    @Resource
    private CacheTemplateDao cacheKeyDao;

    @Override
    public Map<String, Object> pageList(int offset, int pagesize, String key) {

        Map<String, Object> params = Maps.newHashMap();
        params.put("offset", offset);
        params.put("pagesize", pagesize);
        params.put("key", key);

        List<CacheTemplate> data = cacheKeyDao.pageList(params);
        int listCount = cacheKeyDao.pageListCount(params);

        // package result
        Map<String, Object> maps = Maps.newHashMap();
        maps.put("data", data);
        // 总记录数
        maps.put("recordsTotal", listCount);
        // 过滤后的总记录数
        maps.put("recordsFiltered", listCount);
        return maps;
    }

    @Override
    public ResObject save(CacheTemplate cacheTemplate) {
        if (StringUtils.isBlank(cacheTemplate.getKey())) {
            return ResObject.error("请输入“缓存Key”");
        }
        if (StringUtils.isBlank(cacheTemplate.getIntro())) {
            return ResObject.error("请输入“简介”");
        }
        cacheKeyDao.save(cacheTemplate);
        return ResObject.success();
    }

    @Override
    public ResObject update(CacheTemplate cacheTemplate) {
        if (StringUtils.isBlank(cacheTemplate.getKey())) {
            return ResObject.error("请输入“缓存Key”");
        }
        if (StringUtils.isBlank(cacheTemplate.getIntro())) {
            return ResObject.error("请输入“简介”");
        }
        cacheKeyDao.update(cacheTemplate);
        return ResObject.success();
    }

    @Override
    public ResObject delete(int id) {
        cacheKeyDao.delete(id);
        return ResObject.success();
    }

}
